#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
using namespace std;

#define LOG "log.txt"

#define LOG_NORMAL "logNormal.txt"
#define LOG_ERROR "logError.txt"

int main()
{
    fprintf(stdout, "Hello fprintf\n");
    const char* ps = "writ\n";
    write(1, ps, strlen(ps));

    fork(); 
    return 0;
}

// int main()
// {
//     // close(1);
//     // int fd1 = open(LOG_NORMAL, O_WRONLY | O_CREAT | O_TRUNC, 0666);

//     // close(2);
//     // int fd2 = open(LOG_ERROR, O_WRONLY | O_CREAT | O_TRUNC, 0666);

//     // fprintf(stdout, "stdout\n");
//     // fprintf(stdout, "stdout\n");
//     // fprintf(stdout, "stdout\n");

//     // fprintf(stderr, "stderr\n");
//     // fprintf(stderr, "stderr\n");
//     // fprintf(stderr, "stderr\n");

//     /*
//     * 对于可能出现错误时的打印语句，最好使用 perror 或 cerr
//     * 如果想单独查看错误信息，close(2) 即可
//     perror("stderr");
//     perror("stderr");
//     perror("stderr");

//     cerr << "cerr" << endl;
//     cerr << "cerr" << endl;
//     cerr << "cerr" << endl;
//     */


//     //close(1);
//     int fd1 = open(LOG, O_WRONLY | O_CREAT | O_APPEND, 0666);
//     dup2(fd1, 1);

//     printf("you can see me!\n");
//     printf("you can see me!\n");
//     printf("you can see me!\n");
//     printf("you can see me!\n");
//     printf("you can see me!\n");
//     printf("you can see me!\n");

//     // close(0);
//     // int fd1 = open(LOG, O_RDONLY);

//     // int a, b;
//     // scanf("%d %d", &a, &b);
//     // printf("%d %d\n", a, b);

//     // close(1);
//     // int fd1 = open(LOG, O_WRONLY | O_CREAT | O_TRUNC, 0666);

//     // printf("you can see me!\n");
//     // printf("you can see me!\n");
//     // printf("you can see me!\n");
//     // printf("you can see me!\n");
//     // printf("you can see me!\n");
//     // printf("you can see me!\n");

//     // //close(0);
//     // close(1);
//     // //close(2);

//     // int fd1 = open(LOG, O_WRONLY | O_CREAT | O_TRUNC, 0666);
//     // int fd2 = open(LOG, O_WRONLY | O_CREAT | O_TRUNC, 0666);
//     // int fd3 = open(LOG, O_WRONLY | O_CREAT | O_TRUNC, 0666);
//     // int fd4 = open(LOG, O_WRONLY | O_CREAT | O_TRUNC, 0666);
//     // int fd5 = open(LOG, O_WRONLY | O_CREAT | O_TRUNC, 0666);

//     // printf("%d\n", fd1);
//     // printf("%d\n", fd2);
//     // printf("%d\n", fd3);
//     // printf("%d\n", fd4);
//     // printf("%d\n", fd5);

//     // close(fd1);
//     // close(fd2);
//     // close(fd3);
//     // close(fd4);
//     // close(fd5);

//     return 0;
// }

// int main()
// {
//     fprintf(stdout, "%s\n", "Hello fprintf -> stdout");
//     fprintf(stderr, "%s\n", "Hello fprintf -> stderr");

//     cout << "Hello cout -> cout" << endl;
//     cerr << "Hello cerr -> cerr" << endl;

//     return 0;
// }